home *** CD-ROM | disk | FTP | other *** search
/ CD Actual 22 / PC Actual CD 22.iso / SHARE / prog / vesa.exe / VESA_00H.C next >
Encoding:
C/C++ Source or Header  |  1998-02-25  |  3.1 KB  |  77 lines

  1. //▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓  
  2. //
  3. // * Llamada a la función 00h de la BIOS VESA.
  4. // * Watcom C/C++ v.11
  5. //
  6. //▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ (c) Pedro Díez López ▓▓▓▓▓▓
  7.  
  8. #include <i86.h>
  9. //#include <stdio.h>
  10.  
  11. typedef struct 
  12. {
  13.   unsigned char       Firma [4];       // VESA
  14.   unsigned int        VersionVESA;     // Version de la BIOS VESA.
  15.   char         __far *InfoFabricante;  // Información del fabricante.
  16.   unsigned char       Hardware [4];    // Posibilidades del hardware.
  17.   int          __far *Modos;           // Modos disponibles.
  18.   unsigned int        Memoria;         // Numero de bloques de 64Kb.
  19.   unsigned int        VersionSoftware; // Version del software.
  20.   char         __far *InfoVendedor;    // Informacion del vendedor.
  21.   char         __far *InfoProducto;    // Informacion del producto.
  22.   unsigned char       Reservados  [222];
  23.   unsigned char       Informacion [256];
  24. } TInfoVESA;
  25.  
  26. TInfoVESA *InfoVESA;
  27.  
  28.  
  29. void main (void)
  30. {
  31.   union  REGS  regs;
  32.   struct SREGS segr;
  33.   int    Cnt;
  34.  
  35.   regs.w.ax=0x0003;         // Pon modo texto con la BIOS VESA:
  36.   int86 (0x10,®s,®s); // Funcion 00h (AH) Modo 03h (AL)
  37.  
  38.   InfoVESA=(TInfoVESA *) malloc (512);
  39.   strncpy(InfoVESA->Firma,"VBE2",4);   // Escribe VBE2 en el campo Firma, 
  40.                                        // para recibir 512 bytes de información.
  41.   segr.es   =FP_SEG(InfoVESA);
  42.   regs.w.di =FP_OFF(InfoVESA);
  43.   regs.w.ax =0x4F00;
  44.   int86 (0x10,®s,®s);
  45.  
  46.   if (regs.h.al!=0x4F) printf ("El registro de estado ha devuelto %xh, por lo tanto no hay BIOS VESA\n",regs.h.al);
  47.   else 
  48.   {
  49.     printf ("La función 00h de la BIOS VESA ha devuelto:\n");
  50.     printf (" Firma .....................: ");
  51.     for (Cnt=0;Cnt<4;Cnt++) printf ("%c",InfoVESA->Firma[Cnt]);
  52.     printf ("\n Version VESA ..............: %u.%u\n",InfoVESA->VersionVESA>>8,InfoVESA->VersionVESA&0xFF);
  53.     printf (" Informacion del fabricante : ");
  54.     printf ("%s\n",InfoVESA->InfoFabricante);
  55.     printf (" Informacion del hardware ..: ");
  56.     if ( InfoVESA->Hardware[0]&1==0) printf ("DAC de 6 bits de RGB\n");
  57.     else printf ("DAC de mas de 6 bits de RGB\n");
  58.     if ((InfoVESA->Hardware[0]>>1)&1==0) printf ("                              Hardware 100%% compatible VGA\n");
  59.     else printf ("                              El hardware no es 100%% compatible VGA\n");
  60.     if ((InfoVESA->Hardware[0]>>2)&1==1) printf ("                              RAMDAC clasico\n");
  61.     printf  (" Modos disponibles .........: ");
  62.     Cnt=0;
  63.     while (InfoVESA->Modos[Cnt]!=0xFFFF)
  64.     {
  65.       printf ("%xh ",InfoVESA->Modos[Cnt]);
  66.       Cnt++;
  67.     };
  68.     printf ("\n");
  69.     printf (" Memoria de video ..........: %u Kb\n",64*InfoVESA->Memoria);
  70.     printf (" Version del software ......: %u.%u\n",InfoVESA->VersionSoftware>>8,InfoVESA->VersionSoftware&0xFF);
  71.     printf (" Informacion del Vendedor ..: ");
  72.     printf ("%s\n",InfoVESA->InfoVendedor);
  73.     printf (" Informacion del Producto ..: ");
  74.     printf ("%s\n",InfoVESA->InfoProducto);
  75.   }
  76.   free (InfoVESA);
  77. };